|
1
|
|
|
import PageRegistry from '@enbock/application-router/Registry'; |
|
2
|
|
|
import {PageData} from '@enbock/application-router/Router'; |
|
3
|
|
|
import {Observer} from '@enbock/state-value-observer/ValueObserver'; |
|
4
|
|
|
import Translator from '../../../Language/Translator'; |
|
5
|
|
|
import Model from './Model'; |
|
6
|
|
|
|
|
7
|
|
|
export default class Presenter { |
|
8
|
|
|
menuOpenState: Observer<boolean>; |
|
9
|
|
|
routerObserver: Observer<PageData | null>; |
|
10
|
|
|
pageRegistry: PageRegistry; |
|
11
|
|
|
translator: Observer<Translator>; |
|
12
|
|
|
|
|
13
|
|
|
constructor( |
|
14
|
|
|
menuOpenState: Observer<boolean>, |
|
15
|
|
|
translator: Observer<Translator>, |
|
16
|
|
|
routerObserver: Observer<PageData | null>, |
|
17
|
|
|
pageRegistry: PageRegistry |
|
18
|
|
|
) { |
|
19
|
3 |
|
this.translator = translator; |
|
20
|
3 |
|
this.menuOpenState = menuOpenState; |
|
21
|
3 |
|
this.routerObserver = routerObserver; |
|
22
|
3 |
|
this.pageRegistry = pageRegistry; |
|
23
|
|
|
} |
|
24
|
|
|
|
|
25
|
|
|
present(): Model { |
|
26
|
2 |
|
const model: Model = new Model(); |
|
27
|
2 |
|
model.isOpen = this.menuOpenState.value; |
|
28
|
|
|
|
|
29
|
2 |
|
const translator: Translator = this.translator.value; |
|
30
|
2 |
|
model.translation = { |
|
31
|
|
|
home: translator.translate('Application.SideMenu.Home'), |
|
32
|
|
|
settings: translator.translate('Application.SideMenu.Settings') |
|
33
|
|
|
}; |
|
34
|
|
|
|
|
35
|
2 |
|
const pages: PageData[] = this.pageRegistry.getPages(); |
|
36
|
2 |
|
const activePage: string = this.routerObserver.value?.name || ''; |
|
37
|
|
|
|
|
38
|
2 |
|
model.pageNames = []; |
|
39
|
2 |
|
pages.forEach( |
|
40
|
|
|
(page: PageData) => { |
|
41
|
4 |
|
model.pageNames.push(page.name); |
|
42
|
4 |
|
model.isActive[page.name] = (activePage == page.name); |
|
43
|
4 |
|
model.url[page.name] = page.currentUrl; |
|
44
|
|
|
} |
|
45
|
|
|
); |
|
46
|
|
|
|
|
47
|
2 |
|
return model; |
|
48
|
|
|
} |
|
49
|
|
|
} |
|
50
|
|
|
|